package com.xinggq.user.service.service;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.xinggq.common.page.PageCondition;
import com.xinggq.user.service.dto.role.RoleCreateRequest;
import com.xinggq.user.service.dto.role.RolePageRequest;
import com.xinggq.user.service.dto.role.RoleUpdateRequest;
import com.xinggq.user.service.dto.role.RoleVO;

/**
 * 角色服务接口
 *
 * @author system
 * @since 2025-01-10
 */
public interface RoleService {

  /**
   * 创建角色
   *
   * @param request 角色创建请求
   * @return 角色VO
   */
  RoleVO createRole(RoleCreateRequest request);

  /**
   * 更新角色
   *
   * @param request 角色更新请求
   * @return 角色VO
   */
  RoleVO updateRole(RoleUpdateRequest request);

  /**
   * 根据ID获取角色详情
   *
   * @param roleId 角色ID
   * @return 角色VO
   */
  RoleVO getRoleDetailById(Long roleId);

  /**
   * 根据角色编码获取角色详情
   *
   * @param roleCode
   * @return
   */
  RoleVO getRoleDetailByCode(String roleCode);

  /**
   * 分页查询角色
   *
   * @param pageCondition 分页条件
   * @return 角色分页结果
   */
  IPage<RoleVO> pageQuery(PageCondition<RolePageRequest> pageCondition);

  /**
   * 删除角色（逻辑删除）
   *
   * @param roleId 角色ID
   * @return 是否删除成功
   */
  boolean deleteRole(Long roleId);
}